window.onload=function (){
    fullTable(emList);
}

/*
* 将数组内容填充表格数据
* */
function fullTable(array){

        let str="";
        array.forEach(n =>{
            str += `<tr><td>${n.code}</td><td>${n.name}</td>
                        <td>${n.money}</td><td>${n.sex}</td>
                        <td><input type="button" value="删除" onclick="del(${n.code})">
                        <input type="button" value="修改" onclick="findById(${n.code})"></td></tr>`;
        });
        $("data").innerHTML=str;



}

function $(id){
    return document.getElementById(id);
}

/**
 * 按姓名查询
 */
function findByName(){
    //得到文本框内容
    var nameStr=$("nameTxt").value;
    var newList=emList.filter(n => n.name.indexOf(nameStr) != -1);
    fullTable(newList);
}

/**
 * 删除
 * @param code 删除员工的编号
 */
function del(code){
    //找到指定编号的下标
    let index=emList.findIndex(n => n.code == code);
    //删除指定下标的元素
    emList.splice(index,1);
    fullTable(emList)
}

/**
 * 显示弹出框
 */
function showAddDiv(){
    $("addDiv").style.visibility="visible";
}


function checkCode(textId,spanId){
    var arr=emList.map(n => n.code);
    console.log(arr);
    let index=arr.indexOf(parseInt($(textId).value));
    var rexp=/^\d+$/;
    console.log(index);
    if (index === -1){
        if(rexp.test($(textId).value)){
            $(spanId).innerHTML = "验证通过";
            $(spanId).style.color = "green";
            return true;
        }
        else {
            $(spanId).innerHTML = "编号必须为数字";
            $(spanId).style.color = "red";
            return false;
        }
    }
    else {
        $(spanId).innerHTML = "编号已存在";
        $(spanId).style.color = "red";
        return false;
    }
}


function checkName(){
    return checkInfo(/^[a-zA-Z\u4e00-\u9fa5]{2,20}$/,'emNameTxt','addNameSpan','姓名必须为2-20字母或汉字');
}



function checkMoney(){
    return checkInfo(/^\d{1,5}$/,
        'moneyTxt','addMoneySpan','工资必须是5位数以下的数字');
}

function checkUpdateMoney(){
    return checkInfo(/^\d{1,5}$/,
        'updateMoneyTxt','updateSpan','工资必须是5位数以下的数字');
}

function checkSex(){
    return checkInfo(/^男$|^女&/,'sexTxt','addSexSpan','性别只能是男或者女');
}


/**
 * 验证添加输入的信息格式
 * @param textId 验证对象
 * @param rexp 正确格式
 * @param spanId 提示信息位置
 * @param errorInfo 错误信息
 * @returns {boolean} 返回值
 */
function checkInfo(rexp,textId,spanId,errorInfo){
    if(rexp.test($(textId).value)){
        $(spanId).innerHTML = "验证通过";
        $(spanId).style.color = "green";
        return true;
    }
    else{
        $(spanId).innerHTML = errorInfo;
        $(spanId).style.color = "red";
        return false;
    }
}

function checkAll(){
    if (checkName() & checkCode("codeTxt","addCodeSpan")  & checkMoney() & checkSex()){
            return true;
    }
    else {
        return false;
    }
}


/**
 * 添加
 */
function add() {
    if (checkAll()) {
        var obj = {
            code: $("codeTxt").value,
            name: $("emNameTxt").value,
            money: $("moneyTxt").value,
            sex: $("sexTxt").value
        }
        emList.push(obj);
        fullTable(emList);
        $("addDiv").style.visibility = "hidden";
    }
    else {

    }
}


/**
 * 取消添加
 */
function addCancel(){
    $("addDiv").style.visibility="hidden";
}

/**
 * 按ID查询
 * @param code 工号
 */
function findById(code){
    //按工号查找员工对象
    var emObj=emList.find(n => n.code == code);
    //将员工对象的信息赋值给网页元素
    $("codeSpan").innerHTML = emObj.code;
    $("nameSpan").innerHTML = emObj.name;
    $("updateMoneyTxt").value= emObj.money;
    $("sexSpan").innerHTML = emObj.sex;
    $("updateDiv").style.visibility="visible";
}

/**
 * 修改
 */
function update(){
    if (checkUpdateMoney()) {
        //找到要修改的对象
        var emObj = emList.find(n => n.code == $("codeSpan").innerHTML);
        emObj.money = parseInt($("updateMoneyTxt").value);
        fullTable(emList);
        $("updateDiv").style.visibility = "hidden";
    }
}

/**
 * 排序
 */
function sort(){
    emList.sort((a,b) => a.code-b.code);
    fullTable(emList);
}